Skip to content

feat(objectql): duplicate a writable base — ADR-0070 D4#2299

Merged
os-zhuang merged 1 commit into
mainfrom
feat/adr-0070-d4-duplicate-package
Jun 24, 2026
Merged

feat(objectql): duplicate a writable base — ADR-0070 D4#2299
os-zhuang merged 1 commit into
mainfrom
feat/adr-0070-d4-duplicate-package

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

Adds the missing piece of ADR-0070 D4 (package = lifecycle unit). Delete-cascade (protocol.deletePackage + ?keepData) and export (GET /packages/:id/export) already shipped; this adds duplicate:

  • protocol.duplicatePackage — clones every ACTIVE item a base owns into a NEW package, re-namespacing object names (the blueprint prefixes object names with the base namespace, e.g. iojn_repair_ticket; sys_metadata keys on (type,name,org), so a same-name copy would collide with the source) and rewriting every intra-package reference (lookup reference, view object, expressions, …) to the new names via a longest-first, identifier-boundary replace (so iojn_task never corrupts iojn_task_log).
  • POST /packages/:id/duplicate (body { targetPackageId, targetName?, targetNamespace? }).

Tests

@objectstack/objectql: 708 green incl. new duplicatePackage tests — re-namespacing, lookup-reference + view-object rewrite, and boundary-safety; tsc clean. (The runtime endpoint mirrors the existing revert/rollback package routes.)

Follow-up

objectui PackageDetailSheet "Duplicate" button (wires to this endpoint) — small UI add. The keepData schema-vs-data delete choice could also be surfaced in the UI.

Completes ADR-0070 D4. (D5 migration / D6 framing remain.)

🤖 Generated with Claude Code

… reference rewrite (ADR-0070 D4)

protocol.duplicatePackage clones a base's ACTIVE items into a new package,
re-namespacing object names (avoids the (type,name) collision) and rewriting
intra-package references (lookup reference / view object / expressions) via a
longest-first identifier-boundary replace. + POST /packages/:id/duplicate. +tests
(re-namespacing + reference rewrite + boundary-safety). Completes D4 (delete +
export already shipped).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Building Building Preview, Comment Jun 24, 2026 3:55pm

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tests tooling size/m labels Jun 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/objectql, @objectstack/runtime.

25 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/concepts/cloud-artifact-api.mdx (via packages/runtime)
  • content/docs/concepts/core/services.mdx (via @objectstack/objectql)
  • content/docs/concepts/implementation-status.mdx (via @objectstack/objectql, @objectstack/runtime)
  • content/docs/concepts/metadata-lifecycle.mdx (via @objectstack/objectql)
  • content/docs/concepts/north-star.mdx (via packages/runtime)
  • content/docs/concepts/packages.mdx (via @objectstack/objectql, @objectstack/runtime)
  • content/docs/guides/api-reference.mdx (via @objectstack/runtime)
  • content/docs/guides/authentication.mdx (via @objectstack/objectql, @objectstack/runtime)
  • content/docs/guides/cloud-deployment.mdx (via @objectstack/runtime)
  • content/docs/guides/deployment-vercel.mdx (via @objectstack/objectql, @objectstack/runtime)
  • content/docs/guides/driver-configuration.mdx (via @objectstack/runtime)
  • content/docs/guides/formula.mdx (via packages/objectql)
  • content/docs/guides/hook-bodies.mdx (via @objectstack/runtime)
  • content/docs/guides/kernel-services.mdx (via @objectstack/objectql)
  • content/docs/guides/objectql-migration.mdx (via @objectstack/objectql)
  • content/docs/guides/packages.mdx (via @objectstack/objectql, @objectstack/runtime)
  • content/docs/guides/plugin-chatbot-integration.mdx (via @objectstack/runtime)
  • content/docs/guides/plugins.mdx (via @objectstack/objectql)
  • content/docs/guides/production-readiness.mdx (via @objectstack/runtime)
  • content/docs/guides/single-project-mode.mdx (via @objectstack/runtime)
  • content/docs/protocol/objectos/http-protocol.mdx (via @objectstack/runtime)
  • content/docs/protocol/objectos/index.mdx (via @objectstack/objectql, @objectstack/runtime)
  • content/docs/protocol/objectos/lifecycle.mdx (via @objectstack/runtime)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/objectql)
  • content/docs/releases/v9.mdx (via @objectstack/objectql)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant